package com.java.io.character_stream;

import java.io.FileWriter;
import java.io.IOException;

/**
 * 字符流写入操作
 */
public class FileWriterDemo {
    /**
     * 将字符串写入到文件
     * @param path  文件路径
     * @param fileName  文件名
     * @param content   将要写入文件的内容
     * @throws IOException
     */
    public void writeOutToFile(String path, String fileName, String content) throws IOException {
        // 01. 创建一个FileWriter对象。该对象一被初始化就必须要明确被操作指定目录下的文件
        FileWriter fw = new FileWriter(path + fileName);

        // 02. 调用 write 方法，将字符串写入到流中。
        fw.write(content);

        // 03. 刷新流对象中的缓冲中的数据,将数据刷到目的地中。
        // fw.flush();

        // 03. 关闭流资源，但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。
        // 和flush区别：flush刷新后，流可以继续使用，close刷新后，会将流关闭。
        fw.close();
    }

    /** 追加到文末
     * 将字符串写入到原文件，并将新的内容追加到文件最后
     * @param path  文件路径
     * @param fileName  文件名
     * @param content   将要写入文件的内容
     * @throws IOException
     */
    public void writeOutAppendToFile(String path, String fileName, String content) throws IOException {
        // 01. 创建一个FileWriter对象。该对象一被初始化就必须要明确被操作指定目录下的文件
        //      传递一个true参数，代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。
        FileWriter fw = new FileWriter(path + fileName, true);

        // 02. 调用 write 方法，将字符串写入到流中。
        fw.write(content);

        // 03. 刷新流对象中的缓冲中的数据,将数据刷到目的地中。
        // fw.flush();

        // 03. 关闭流资源，但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。
        // 和flush区别：flush刷新后，流可以继续使用，close刷新后，会将流关闭。
        fw.close();
    }
}
